<?php

namespace app\common\model\Business;

use think\Model;

// 引入软删除模型
use traits\model\SoftDelete;

/**
 * 客户模型
 */
class Business extends Model
{
    //标记当前模型操作来自哪个表
    protected $name = 'business';

    // 在模型内容引用软删除
    use SoftDelete;

    // 开启自动写入时间戳字段
    protected $autoWriteTimestamp = true;

    // 设置时间戳字段的名字
    protected $createTime = "createtime"; //插入的时候设置的字段名

    // 设置更新的字段名字，因为更新的时候时间字段会跟我们数据库的不一样，所以设置不开启false
    protected $updateTime = false; // 在更新数据的时候，不更新时间字段

    // 设置软删除的字段更新的时间字段
    protected $deleteTime = 'deletetime';

    // 增加获取器字段选项
    protected $append = [
        'avatar_text',
        'province_text',
        'city_text',
        'district_text',
        'deal_text', //成交状态
        'sex_text', //性别
        'region_text' //地区
    ];

    public function getRegionTextAttr($value, $data)
    {
        $province = model('Region')->where(['code' => $data['province']])->find();

        $city = model('Region')->where(['code' => $data['city']])->find();

        $district = model('Region')->where(['code' => $data['district']])->find();

        $output = [];

        if ($province) {
            $output[] = $province['name'];
        }

        if ($city) {
            $output[] = $city['name'];
        }

        if ($district) {
            $output[] = $district['name'];
        }

        //广东省-广州市-海珠区
        return implode('-', $output);
    }

    // 性别字段
    public function getSexTextAttr($value, $data)
    {
        $sexlist = [0 => '保密', 1 => '男', 2 => '女'];

        $gender = isset($data['gender']) ? $data['gender'] : '';

        if ($gender >= '0') {
            return $sexlist[$gender];
        }
        return;
    }

    // 交易状态字段
    public function getDealTextAttr($value, $data)
    {
        $dellist = [0 => '未成交', 1 => '已成交'];

        $deal = isset($data['deal']) ? $data['deal'] : '';

        if ($deal >= '0') {
            return $dellist[$deal];
        }
        return;
    }

    // 省
    public function getProvinceTextAttr($value, $data)
    {
        $region = empty($data['province']) ? '' : trim($data['province']);

        //查询中文字
        return model('Region')->where(['code' => $region])->value('name');
    }

    // 市
    public function getCityTextAttr($value, $data)
    {
        $region = empty($data['city']) ? '' : trim($data['city']);

        //查询中文字
        return model('Region')->where(['code' => $region])->value('name');
    }

    // 区
    public function getDistrictTextAttr($value, $data)
    {
        $region = empty($data['district']) ? '' : trim($data['district']);

        //查询中文字
        return model('Region')->where(['code' => $region])->value('name');
    }

    //增加对应的获取器的方法 命名有规律 输出的时候才会叫做avatar_text
    // $value 当前字段的值
    // $data 是一整条数据结构
    public function getAvatarTextAttr($value, $data)
    {
        //获取到cdn的地址
        $cdnurl = config('site.cdnurl') ? config('site.cdnurl') : '';
        // 去除两边的/
        $cdnurl = trim($cdnurl, '/');

        $avatar = isset($data['avatar']) ? $data['avatar'] : '';

        //如果为空就给一个默认图片地址
        if (empty($avatar) || !is_file("." . $avatar)) {
            $avatar = "/assets/img/avatar.png";
        }

        return $cdnurl . $avatar;
    }

    // 关联查询，来源
    // 因为要在搜索页面中，拿到课程的分类，但是此时的表是课程，所以要链表到课程分类表
    public function source()
    {
        // subject.cateid = category.id  (课程.课程分类id = 课程分类.id)
        // $this->belongsTo(关联外键模型,外键字段,关联表的主键,废弃参数,链表方式);
        // setEagerlyType(0)  采用join的方式来做查询
        return $this->belongsTo('app\common\model\Business\Source', 'sourceid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    // 关联查询，管理员
    public function admin()
    {
        // subject.cateid = category.id  (课程.课程分类id = 课程分类.id)
        // $this->belongsTo(关联外键模型,外键字段,关联表的主键,废弃参数,链表方式);
        // setEagerlyType(0)  采用join的方式来做查询
        return $this->belongsTo('app\common\model\Business\Admin', 'adminid', 'id', [], 'LEFT')->setEagerlyType(0);
    }

    // 关联查询
    public function record()
    {
        // subject.cateid = category.id  (课程.课程分类id = 课程分类.id)
        // $this->belongsTo(关联外键模型,外键字段,关联表的主键,废弃参数,链表方式);
        // setEagerlyType(0)  采用join的方式来做查询
        return $this->belongsTo('app\common\model\Business\Record', 'id', 'busid', [], 'LEFT')->setEagerlyType(0);
    }

    
}
